import java.util.Arrays;
import java.util.Scanner;

public class demo {

//    数组：存放一组相同类型的数据的集合
    //定义数组的时候 不能够写 具体的数字。int[10] arr=0;  这样是错误的
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4,5,6};
        System.out.println(arr1.length);
        int[] arr2 = new int[3];
        //new是java的关键字 关键字：实例化一个对象
        //意味着java当中的数组 也是一个对象 相当于没有初始化 里面的值都为0
        int[] arr3 = new int[]{1,2,3,4,5,6};  //[]内不能写数字
        System.out.println(arr1[3]);//这里如果给负数 会报错（数组越界异常）
        arr1[3] = 10;//也可以修改数据
        //遍历数组
        //第一种打印方式
        for (int i = 0; i < arr1.length; i++) {//不能写<= 写了就越界了
            System.out.print(arr1[i] + " ");
        }
        System.out.println();
        //第二种打印方式(增强for循环)  类型+变量:数组
        for (int x : arr1) {
            System.out.print(x + " ");
        }
        System.out.println();
        //for循环 和for each 循环区别
        //for循环是可以拿到下标的
        //for each是拿不到下标的 -->多用于集合中

        //借助java的操作数组的工作类Arrays.toString(需要导入包):将参数的数组 以字符串的形式进行输出
        String ret = Arrays.toString(arr1);
        System.out.println(ret);
//        System.out.println(Arrays.toString(arr1));
    }











    //汉诺塔问题
//    汉诺塔游戏规则
//    每次只能移动一个长方形，并且大的长方形不能在小的长方形之上汉诺塔的解题步骤(分为两步)
//    第一步:
//    把n-1个模块从塔1移动到塔2
//    把第n个模块从塔1移动到塔3
//    第二步:
//    把n-1个模块从塔2移动到塔3
    public static void move(char pose1, char pose2){
        System.out.print(pose1 + "->" + pose2 +" ");
    }
    public static void hanio(int n, char A, char B, char C) {
        if (n == 1){
            move(A, C);
        }
        else {
            hanio(n - 1, A, C, B);
            move(A, C);
            hanio(n - 1, B, A, C);
        }
    }
    public static void main1(String[] args) {
        System.out.println("请输入要移动的圆盘个数：");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        hanio(n, 'A', 'B', 'C');
    }
}
